<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>通过敲击键盘上不同的字母，会发出不同的声音，并且页面上会伴随着敲击的动画</title>
    <style>
        html {
            font-size: 10px;
            background: url(http://i.imgur.com/b9r5sEL.jpg) bottom center;
            background-size: cover;
        }
        body,
        html {
            margin: 0;
            padding: 0;
            font-family: sans-serif;
        }

        .keys {
            display: flex;
            flex: 1;
            min-height: 100vh;
            align-items: center;
            justify-content: center;
        }

        .key {
            border: .4rem solid black;
            border-radius: .5rem;
            margin: 1rem;
            font-size: 1.5rem;
            padding: 1rem .5rem;
            transition: all .07s ease;
            width: 10rem;
            text-align: center;
            color: white;
            background: rgba(0, 0, 0, 0.4);
            text-shadow: 0 0 .5rem black;
        }

        .playing {
            transform: scale(1.1);
            border-color: #ffc600;
            box-shadow: 0 0 1rem #ffc600;
        }

        kbd {
            display: block;
            font-size: 4rem;
        }

        .sound {
            font-size: 1.2rem;
            text-transform: uppercase;
            letter-spacing: .1rem;
            color: #ffc600;
        }
    </style>
</head>
<body>
    <div class="keys">
        <div data-key="65" class="key">
            <kbd>A</kbd>
            <span class="sound">clap</span>
        </div>
        <div data-key="83" class="key">
            <kbd>S</kbd>
            <span class="sound">hihat</span>
        </div>
        <div data-key="68" class="key">
            <kbd>D</kbd>
            <span class="sound">kick</span>
        </div>
        <div data-key="70" class="key">
            <kbd>F</kbd>
            <span class="sound">openhat</span>
        </div>
        <div data-key="71" class="key">
            <kbd>G</kbd>
            <span class="sound">boom</span>
        </div>
        <div data-key="72" class="key">
            <kbd>H</kbd>
            <span class="sound">ride</span>
        </div>
        <div data-key="74" class="key">
            <kbd>J</kbd>
            <span class="sound">snare</span>
        </div>
        <div data-key="75" class="key">
            <kbd>K</kbd>
            <span class="sound">tom</span>
        </div>
        <div data-key="76" class="key">
            <kbd>L</kbd>
            <span class="sound">tink</span>
        </div>
    </div>

    <audio data-key="65" src="sounds/clap.wav"></audio>
    <audio data-key="83" src="sounds/hihat.wav"></audio>
    <audio data-key="68" src="sounds/kick.wav"></audio>
    <audio data-key="70" src="sounds/openhat.wav"></audio>
    <audio data-key="71" src="sounds/boom.wav"></audio>
    <audio data-key="72" src="sounds/ride.wav"></audio>
    <audio data-key="74" src="sounds/snare.wav"></audio>
    <audio data-key="75" src="sounds/tom.wav"></audio>
    <audio data-key="76" src="sounds/tink.wav"></audio>

    <script>
        //监听键盘事件
        window.addEventListener('keydown',function(e){
            let key = document.querySelector(`div[data-key="${e.keyCode}"]`);
            let audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);

            if(!audio)return;
            key.classList.add('playing');
            audio.currentTime=0;
            audio.play()

        })

        //动画结束后移除动画
        let keys = document.querySelectorAll('.key');
        keys.forEach(key => {
            key.addEventListener('transitionend',function(e){
            if(e.propertyName == 'transform'){
                e.target.classList.remove('playing')
            }
        })
        })

    </script>
</body>
</html>